home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / CoreFoundation / CFPlugIn.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  5.3 KB  |  182 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        CFPlugIn.h
  3.  
  4.      Contains:    CoreFoundation plugins
  5.  
  6.      Version:    Technology:    Mac OS X
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __COREFOUNDATION_CFPLUGIN__
  18. #define __COREFOUNDATION_CFPLUGIN__
  19.  
  20. #ifndef __COREFOUNDATION_CFBASE__
  21.     #include <CoreFoundation\CFBase.h>
  22. #endif
  23.  
  24.  
  25.  
  26.  
  27. #ifndef __COREFOUNDATION_CFARRAY__
  28.     #include <CoreFoundation\CFArray.h>
  29. #endif
  30.  
  31. #ifndef __COREFOUNDATION_CFSTRING__
  32.     #include <CoreFoundation\CFString.h>
  33. #endif
  34.  
  35. #ifndef __COREFOUNDATION_CFURL__
  36.     #include <CoreFoundation\CFURL.h>
  37. #endif
  38.  
  39. #ifndef __COREFOUNDATION_CFBUNDLE__
  40.     #include <CoreFoundation\CFBundle.h>
  41. #endif
  42.  
  43.  
  44.  
  45.  
  46. #if PRAGMA_ONCE
  47. #pragma once
  48. #endif
  49.  
  50. #ifdef __cplusplus
  51. extern "C" {
  52. #endif
  53.  
  54. #if PRAGMA_IMPORT
  55. #pragma import on
  56. #endif
  57.  
  58. #if PRAGMA_STRUCT_ALIGN
  59.     #pragma options align=mac68k
  60. #elif PRAGMA_STRUCT_PACKPUSH
  61.     #pragma pack(push, 2)
  62. #elif PRAGMA_STRUCT_PACK
  63.     #pragma pack(2)
  64. #endif
  65.  
  66. typedef struct __CFPlugInInstanceRef * CFPlugInInstanceRef;
  67. extern const CFStringRef kCFPlugInDynamicRegistrationKey;
  68. extern const CFStringRef kCFPlugInDynamicRegisterFunctionKey;
  69. extern const CFStringRef kCFPlugInUnloadFunctionKey;
  70. extern const CFStringRef kCFPlugInFactoriesKey;
  71. extern const CFStringRef kCFPlugInTypesKey;
  72. /* ================= Function prototypes for various callbacks ================= */
  73. typedef CALLBACK_API_C( void , CFPlugInDynamicRegisterFunction )(CFPlugInRef plugIn);
  74. typedef CALLBACK_API_C( void , CFPlugInUnloadFunction )(CFPlugInRef plugIn);
  75. typedef CALLBACK_API_C( CFPlugInInstanceRef , CFPlugInFactoryFunction )(CFAllocatorRef allocator, CFStringRef typeName);
  76. typedef CALLBACK_API_C( Boolean , CFPlugInInstanceGetInterfaceFunction )(CFPlugInInstanceRef instance, CFStringRef interfaceName, void **ftbl);
  77. typedef CALLBACK_API_C( void , CFPlugInInstanceDeallocateInstanceDataFunction )(void *instanceData);
  78. /* ================= Creating PlugIns ================= */
  79. EXTERN_API_C( UInt32 )
  80. CFPlugInGetTypeID                (void);
  81.  
  82. EXTERN_API_C( CFPlugInRef )
  83. CFPlugInCreate                    (CFAllocatorRef         allocator,
  84.                                  CFURLRef                 plugInURL);
  85.  
  86. /* Might return an existing instance with the ref-count bumped. */
  87. EXTERN_API_C( CFBundleRef )
  88. CFPlugInGetBundle                (CFPlugInRef             plugIn);
  89.  
  90. /* ================= Controlling load on demand ================= */
  91. /* For plugIns. */
  92. /* A dynamic registration function can call CFPlugInSetLoadOnDemand. */
  93. EXTERN_API_C( void )
  94. CFPlugInSetLoadOnDemand            (CFPlugInRef             plugIn,
  95.                                  Boolean                 flag);
  96.  
  97. EXTERN_API_C( Boolean )
  98. CFPlugInIsLoadOnDemand            (CFPlugInRef             plugIn);
  99.  
  100. /* ================= Finding factories and creating instances ================= */
  101. /* For plugIn hosts. */
  102. /* Functions for finding factories to create specific types and actually creating instances of a type. */
  103. EXTERN_API_C( CFArrayRef )
  104. CFPlugInFindFactoriesForPlugInType (CFStringRef         typeName);
  105.  
  106. EXTERN_API_C( CFPlugInInstanceRef )
  107. CFPlugInInstanceCreate            (CFAllocatorRef         allocator,
  108.                                  CFStringRef             factoryName,
  109.                                  CFStringRef             typeName);
  110.  
  111. /* ================= Using instances ================= */
  112. /* For plugIn hosts and/or plugIns. */
  113. /* Functions for dealing with instances. */
  114. EXTERN_API_C( Boolean )
  115. CFPlugInInstanceGetInterfaceFunctionTable (CFPlugInInstanceRef  instance,
  116.                                  CFStringRef             interfaceName,
  117.                                  void **                ftbl);
  118.  
  119. EXTERN_API_C( CFStringRef )
  120. CFPlugInInstanceGetFactoryName    (CFPlugInInstanceRef     instance);
  121.  
  122. EXTERN_API_C( void *)
  123. CFPlugInInstanceGetInstanceData    (CFPlugInInstanceRef     instance);
  124.  
  125. /* ================= Registering factories and types ================= */
  126. /* For plugIn writers who must dynamically register things. */
  127. /* Functions to register factory functions and to associate factories with types. */
  128. EXTERN_API_C( Boolean )
  129. CFPlugInRegisterFactoryFunction    (CFStringRef             factoryName,
  130.                                  CFPlugInFactoryFunction  func);
  131.  
  132. EXTERN_API_C( Boolean )
  133. CFPlugInRegisterFactoryFunctionByName (CFStringRef         factoryName,
  134.                                  CFPlugInRef             plugIn,
  135.                                  CFStringRef             functionName);
  136.  
  137. EXTERN_API_C( Boolean )
  138. CFPlugInUnregisterFactory        (CFStringRef             factoryName);
  139.  
  140. EXTERN_API_C( Boolean )
  141. CFPlugInRegisterPlugInType        (CFStringRef             factoryName,
  142.                                  CFStringRef             typeName);
  143.  
  144. EXTERN_API_C( Boolean )
  145. CFPlugInUnregisterPlugInType    (CFStringRef             factoryName,
  146.                                  CFStringRef             typeName);
  147.  
  148. /* ================= Primitive instance creation ================= */
  149. /* For plugIns. */
  150. /* Factory function implementations should use this to actually create an instance. */
  151. EXTERN_API_C( UInt32 )
  152. CFPlugInInstanceGetTypeID        (void);
  153.  
  154. EXTERN_API_C( CFPlugInInstanceRef )
  155. CFPlugInInstanceCreateWithInstanceDataSize (CFAllocatorRef  allocator,
  156.                                  CFIndex                 instanceDataSize,
  157.                                  CFPlugInInstanceDeallocateInstanceDataFunction  deallocateInstanceFunction,
  158.                                  CFStringRef             factoryName,
  159.                                  CFPlugInInstanceGetInterfaceFunction  getInterfaceFunction);
  160.  
  161.  
  162. #if PRAGMA_STRUCT_ALIGN
  163.     #pragma options align=reset
  164. #elif PRAGMA_STRUCT_PACKPUSH
  165.     #pragma pack(pop)
  166. #elif PRAGMA_STRUCT_PACK
  167.     #pragma pack()
  168. #endif
  169.  
  170. #ifdef PRAGMA_IMPORT_OFF
  171. #pragma import off
  172. #elif PRAGMA_IMPORT
  173. #pragma import reset
  174. #endif
  175.  
  176. #ifdef __cplusplus
  177. }
  178. #endif
  179.  
  180. #endif /* __COREFOUNDATION_CFPLUGIN__ */
  181.  
  182.